/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "cj_font_ffi.h"

#include "bridge/cj_frontend/interfaces/cj_ffi/utils.h"

using namespace Keels::Ace;
using namespace Keels::Ace::Framework;

extern "C" {
void FfiFontManagerRegisterFont(const char* familyName, const char* familySrc)
{
    auto frontend = AceType::DynamicCast<CJFrontendAbstract>(Utils::GetCurrentFrontend());
    if (!frontend) {
        LOGE("Can not get frontend.");
        return;
    }
    frontend->RegisterFont(familyName, familySrc);
}

VectorStringHandle FfiFontManagerGetSystemFontList()
{
    auto frontend = AceType::DynamicCast<CJFrontendAbstract>(Utils::GetCurrentFrontend());
    if (!frontend) {
        LOGE("Can not get frontend.");
        return nullptr;
    }
    return frontend->GetSystemFontList();
}

NativeOptionFontInfo FfiFontManagerGetFontByName(const char* fontName)
{
    auto frontend = AceType::DynamicCast<CJFrontendAbstract>(Utils::GetCurrentFrontend());
    if (!frontend) {
        LOGE("Can not get frontend.");
        return NativeOptionFontInfo { .hasValue = false, .info = nullptr };
    }
    return frontend->GetSystemFont(fontName);
}
}